home *** CD-ROM | disk | FTP | other *** search
/ Freelog 22 / freelog 22.iso / Prog / Djgpp / GPC2952B.ZIP / doc / gpc / docdemos / objectdemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-02-09  |  1.5 KB  |  81 lines

  1. program ObjectDemo;
  2.  
  3. type
  4.   Str100 = String (100);
  5.  
  6.   FooParentPtr = ^fooParent;
  7.   FooPtr = ^foo;
  8.  
  9.   FooParent = object
  10.     constructor Init;
  11.     destructor Done; virtual;
  12.     procedure Bar (c: Real); virtual;
  13.     function Baz (b, a, z: Char): Str100;  { not virtual }
  14.   end;
  15.  
  16.   Foo = object (FooParent)
  17.     x, y: Integer;
  18.     constructor Init (a, b: Integer);
  19.     destructor Done; virtual;
  20.     procedure Bar (c: Real); virtual;  { overrides `FooParent.Bar' }
  21.     z: Real;  { GPC extension: data fields after methods }
  22.     function Baz: Boolean;  { new function }
  23.   end;
  24.  
  25. constructor FooParent.Init;
  26. begin
  27.   WriteLn ('FooParent.Init')
  28. end;
  29.  
  30. destructor FooParent.Done;
  31. begin
  32.   WriteLn ('I''m also done.')
  33. end;
  34.  
  35. procedure FooParent.Bar (c : Real);
  36. begin
  37.   WriteLn ('FooParent.Bar (', c, ')')
  38. end;
  39.  
  40. function FooParent.Baz (b, a, z : Char) = s : Str100;
  41. begin
  42.   WriteStr (s, 'FooParent.Baz (', b, ', ', a, ', ', z, ')')
  43. end;
  44.  
  45. constructor Foo.Init (a, b : Integer);
  46. begin
  47.   inherited Init;
  48.   x := a;
  49.   y := b;
  50.   z := 3.4;
  51.   FooParent.Bar (1.7)
  52. end;
  53.  
  54. destructor Foo.Done;
  55. begin
  56.   WriteLn ('I''m done.');
  57.   inherited Done
  58. end;
  59.  
  60. procedure Foo.Bar (c: Real);
  61. begin
  62.   WriteLn ('Foo.Bar (', c, ')')
  63. end;
  64.  
  65. function Foo.Baz: Boolean;
  66. begin
  67.   Baz := True
  68. end;
  69.  
  70. var
  71.   Ptr: FooParentPtr;
  72.  
  73. begin
  74.   Ptr := New (FooPtr, Init (2, 3));
  75.   Ptr^.Bar (3);
  76.   Dispose (Ptr, Done);
  77.   New (Ptr, Init);
  78.   with Ptr^ do
  79.     WriteLn (Baz ('b', 'a', 'z'))
  80. end.
  81.